package src.itheima01;

import java.util.LinkedList;

/*
    java.util.Collection<E>:接口
        单列集合的根接口,里面定义的方法,
        子接口/实现类都有

        java.util.List<E>: 接口
            特点:
                1.有序(保证存入和取出元素的顺序是一致的)
                2.有索引
                3.可重复

        List<E>接口: 常用实现类
        java.util.LinkedList<E> 类
            特点:
                1.底层采用链表数据结构
                2.链表数据结构: 增删快,查询慢
                3.线程不同步,不安全,但是效率高
                
        LinkedList集合,操作头和尾节点的方法
            - public void addFirst(E e):将指定元素插入此列表的开头。
            - public void addLast(E e):将指定元素添加到此列表的结尾。
            - public E getFirst():返回此列表的第一个元素。
            - public E getLast():返回此列表的最后一个元素。
            - public E removeFirst():移除并返回此列表的第一个元素。
            - public E removeLast():移除并返回此列表的最后一个元素。

 */
public class Demo03LinkedList {
    public static void main(String[] args) {
        //创建LinkedList集合对象,泛型String
        LinkedList<String> linked = new LinkedList<>();
        //add: 添加元素  等效于 addLast
        linked.add("bbb");
        linked.add("ccc");
        System.out.println(linked);//[bbb, ccc]

        //在头上,添加aaa
        linked.addFirst("aaa");

        //在尾部,添加ddd
        linked.addLast("ddd");
        System.out.println(linked);//[aaa, bbb, ccc, ddd]

        //获取头节点: aaa
        String sFirst = linked.getFirst();
        System.out.println(sFirst);//aaa

        //获取尾节点: ddd
        String sLast = linked.getLast();
        System.out.println(sLast);//ddd

        System.out.println(linked);

        //删除头节点: aaa
        sFirst = linked.removeFirst();
        System.out.println("被删除的头节点: "+sFirst);//aaa

        //删除尾节点: ddd
        sLast = linked.removeLast();
        System.out.println("被删除的尾节点: "+sLast);//ddd

        System.out.println(linked);



    }
}
